home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 2.toast / pc / sample code / quicktime / quicktimeintro / graphic import.export / macshell / macshell.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-06  |  3.0 KB  |  166 lines

  1. // Graphics Importer and Exporter Samples
  2. // Originally written by Sam Bushell for QuickTime "Live" '99
  3. // WWDC 2000 Introduction to QuickTime
  4.  
  5. #include "MacShell.h"
  6. #include <SIOUX.h>
  7.  
  8. // globals
  9. // ------------------------
  10. BitMap screenBits;
  11. Boolean gDone = false;
  12.  
  13. static void doMenu( long menuSelection )
  14. {
  15.     short whichMenu = HiWord(menuSelection);
  16.     short whichMenuItem = LoWord(menuSelection);
  17.     
  18.     switch (whichMenu) {
  19.     case kAppleMenuID:
  20.         switch (whichMenuItem) {
  21.         case kAppleMenuAbout:
  22.             Alert(128, NULL);
  23.             break;
  24.  
  25.         default:
  26.             break;
  27.         }
  28.         break;
  29.  
  30.     case kFileMenuID:
  31.         switch (whichMenuItem) {
  32.         case kFileMenuQuit:
  33.             gDone = true;
  34.             break;
  35.         }
  36.         break;
  37.     
  38.     case kDemoMenuID:
  39.         switch (whichMenuItem) {
  40.         case kDemoMenuDraw:
  41.             DrawImage();
  42.             break;
  43.         case kDemoMenuScaleRotate:
  44.             ScaleAndRotate();
  45.             break;
  46.         case kDemoMenuAlpha:
  47.             AlphaComposite();
  48.             break;
  49.         case kDemoMenuMoreInfo:
  50.             GetMoreInfo();
  51.             break;
  52.         case kDemoMenuMultipleImage:
  53.             MultipleImage();
  54.             break;
  55.         case kDemoMenuURLImage:
  56.             ImageFromURL();
  57.             break;
  58.         case kDemoMenuFiltersExport:
  59.             FilterExport();
  60.             break;
  61.         case kDemoMenuMovieImage:
  62.             MovieToImage();
  63.             break;
  64.         default:
  65.             break;
  66.         } // switch
  67.     }
  68. }
  69.  
  70. void pause( void )
  71. {
  72.     EventRecord event;
  73.     Str255 saveTitle;
  74.     
  75.     if( FrontWindow() ) {
  76.         GetWTitle( FrontWindow(), saveTitle );
  77.         SetWTitle( FrontWindow(), "\p(paused)" );
  78.     }
  79.     
  80.     do {
  81.         // wait
  82.     } while( false == WaitNextEvent( mDownMask + keyDownMask, &event, -1, NULL ) );
  83.     
  84.     if( FrontWindow() )
  85.         SetWTitle( FrontWindow(), saveTitle );
  86. }
  87.  
  88. Boolean IsQuickTimeInstalled(void) 
  89. {
  90.     OSErr    err;
  91.     long    lResult;
  92.  
  93.     err = Gestalt(gestaltQuickTime, &lResult);
  94.     return (err == noErr);
  95. }
  96.  
  97. int main( void )
  98. {
  99.     // initialize for carbon & QuickTime
  100.     InitCursor();
  101.     if ( IsQuickTimeInstalled() )
  102.         EnterMovies();
  103.     else
  104.         goto bail;
  105.         
  106.     GetQDGlobalsScreenBits( &screenBits );
  107.  
  108.     SetMenuBar(GetNewMBar(128));
  109.     DrawMenuBar();
  110.     
  111.     while (gDone == false) {
  112.         EventRecord theEvent;
  113.         WindowPtr pWhichWindow;        
  114.         short windowPart;
  115.         
  116.         WaitNextEvent(everyEvent, &theEvent, -1, NULL);
  117.         
  118.         if ( !SIOUXHandleOneEvent(&theEvent) ) {
  119.         
  120.             switch (theEvent.what) {
  121.                 case updateEvt:
  122.                     pWhichWindow = (WindowPtr)theEvent.message;
  123.                     
  124.                     // we don't do anything for this simple sample
  125.                     BeginUpdate(pWhichWindow);
  126.                     EndUpdate(pWhichWindow);
  127.                     break;
  128.                 
  129.                 case keyDown:
  130.                     if (theEvent.modifiers & cmdKey) {
  131.                         doMenu(MenuKey(theEvent.message & charCodeMask));
  132.                     }
  133.                     break;
  134.                 
  135.                 case mouseDown:
  136.                     windowPart = FindWindow(theEvent.where, &pWhichWindow);
  137.  
  138.                     switch (windowPart) {
  139.                         case inDrag:
  140.                             DragWindow(pWhichWindow, theEvent.where, &screenBits.bounds);
  141.                             break;
  142.  
  143.                         case inGoAway:
  144.                             if (TrackGoAway(pWhichWindow, theEvent.where))
  145.                                 DisposeWindow( pWhichWindow );
  146.                                 //gDone = true;
  147.                             break;
  148.  
  149.                         case inContent:
  150.                             SelectWindow(pWhichWindow);
  151.                             break;
  152.  
  153.                         case inMenuBar:
  154.                             doMenu(MenuSelect(theEvent.where));
  155.                             break;
  156.                     }
  157.                     break;
  158.             }
  159.         }
  160.     }
  161.     
  162. bail:
  163.  
  164.     return 0;    
  165. }
  166.